#include "app_common.h"

long app_common_getTime(void)
{
    struct timeval tv;
    gettimeofday(&tv, NULL);
    return tv.tv_sec * 1000 + tv.tv_usec / 1000;
    // tv_sec 秒    tv_usec 微秒
}

/**
 * 将字符数组格式的消息数据转换为json格式的消息数据
    消息数据包含
        连接类型：1 代表蓝牙连接
        设备id: "xx"
        消息体内容: "abcd"
    字符数组格式： 1 2 4 xxabcd
        字节1：连接类型
        字节2：设备id长度
        字节3：消息体长度
        字节4~n：设备id和消息体
    json格式: {"conn_type": 1, "id": "5858", "msg": "61626364"}
 */
char *app_common_charsToHexstr(char *src, int src_len)
{
    char *hex_str = malloc(src_len * 2 + 1);
    for (int i = 0; i < src_len; i++)
    {
        sprintf(hex_str + i * 2, "%02X", src[i]);
    }
    hex_str[src_len * 2] = '\0';
    return hex_str;
}

char* app_common_hexstrToChars(char *hex_str, int* hex_len)
{
    char *chars = malloc(*hex_len / 2);
    // 61 62 63 64 => abcd   [a ][b ][c ][d ]
    // 以2个为单位遍历hexstr中的每个字符，得到对应的字符，添加到chars中
    for (int i = 0; i < *hex_len; i += 2)
    {
        sscanf(hex_str + i, "%2hhX", chars + i / 2);
    }
    *hex_len /= 2;
    return chars;
}
